<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  
  <title>git仓库管理 | ChenBlue | 飞雪连天射白鹿 笑书神侠倚碧鸳</title>

  
  <meta name="author" content="ChenBlue">
  

  
  <meta name="description" content="学习笔记">
  

  
  
  <meta name="keywords" content="git,repo">
  

  <meta id="viewport" name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, minimal-ui">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">

  <meta property="og:title" content="git仓库管理"/>

  <meta property="og:site_name" content="ChenBlue"/>

  
  <meta property="og:image" content="/blog/favicon.ico"/>
  

  <link href="/blog/favicon.ico" rel="icon">
  <link rel="alternate" href="/blog/atom.xml" title="ChenBlue" type="application/atom+xml">
  <link rel="stylesheet" href="/blog/css/style.css" media="screen" type="text/css">
<meta name="generator" content="Hexo 5.4.0"></head>


<body>
<div class="blog">
  <div class="content">

    <header>
  <div class="site-branding">
    <h1 class="site-title">
      <a href="/blog/">ChenBlue</a>
    </h1>
    <p class="site-description">飞雪连天射白鹿 笑书神侠倚碧鸳</p>
  </div>
  <nav class="site-navigation">
    <ul>
      
    </ul>
  </nav>
</header>

    <main class="site-main posts-loop">
    <article>

  
    
    <h3 class="article-title"><span>git仓库管理</span></h3>
    
  

  <div class="article-top-meta">
    <span class="posted-on">
      <a href="/blog/2021/07/25/Git仓库的管理/" rel="bookmark">
        <time class="entry-date published" datetime="2021-07-25T12:39:03.000Z">
          2021-07-25
        </time>
      </a>
    </span>
  </div>


  

  <div class="article-content">
    <div class="entry">
      
        <h1 id="为什么管理git仓库"><a href="#为什么管理git仓库" class="headerlink" title="为什么管理git仓库"></a>为什么管理git仓库</h1><p>git 就是管理代码的工具。为什么还要对git进行管理？</p>
<p>因为有时候一个工程需要多个模块配合完成。且每个模块相互独立。这时候以一个工程为git仓库好还是以一个模块为仓库好？</p>
<p>显然是每个模块都是一个git更加合理一些。那么对于工程而言。他用到了多个git就需要对多个git进行管理</p>
<h2 id="管理git的工具-repo-amp-git子模块"><a href="#管理git的工具-repo-amp-git子模块" class="headerlink" title="管理git的工具 repo &amp; git子模块"></a>管理git的工具 repo &amp; git子模块</h2><h3 id="repo的依赖"><a href="#repo的依赖" class="headerlink" title="repo的依赖"></a>repo的依赖</h3><p>repo依赖python环境。目前我这里的环境是python3。不清楚python2是否可以</p>
<p>repo 仓库manifest的建立</p>
<ul>
<li><p>创建manifest初始模型</p>
<pre class="language-none"><code class="language-none">mkdir manifest
cd manifest
git init --bare
git init
git push </code></pre></li>
<li><p>添加 default.xml</p>
</li>
</ul>
<pre class="language-none"><code class="language-none">xml version&#x3D;1.0 encoding&#x3D;UTF-8 

manifest
    remote name&#x3D;root fetch&#x3D;. 
    default remote&#x3D;root revision&#x3D;master 
    project path&#x3D;raspberrypi name&#x3D;raspberrypi revision&#x3D;master

manifest</code></pre>
<p>git 三连</p>
<p><code>add commit push</code></p>
<p>如果需要再repo仓库添加新的git 参考 default.xml中的raspberry行</p>
<ul>
<li>下载代码</li>
</ul>
<ol>
<li>先clone repo工具<pre class="language-none"><code class="language-none">git clone httpsgitee.comChenBluegit-repo.git</code></pre></li>
<li>将工具放到~bin 目录下<pre class="language-none"><code class="language-none">cp git-reporepo ~bin</code></pre></li>
<li>下载代码<pre class="language-none"><code class="language-none">repo init -u git@gitee.comChenBluemanifest.git -m default.xml --repo-url&#x3D;git@gitee.comChenBluegit-repo.git</code></pre>
或<pre class="language-none"><code class="language-none">repo init -u httpsgitee.comChenBluemanifest.git -m default.xml --repo-url&#x3D;httpsgitee.comChenBluegit-repo.git</code></pre>
repo 也可以带上绝对路径 git-reporepo 后面就不需要加 –repo-url 他会从本地复制一份repo到目录中而不是从网上再次下载</li>
</ol>
<h1 id="git-子模块"><a href="#git-子模块" class="headerlink" title="git 子模块"></a>git 子模块</h1><p>git子模块是git官方的一种管理git的方式在我看来和repo有一些异曲同工。目的是一样的不同点还是有一些的。最大的不同点就是repo是谷歌开发的一般的电脑不支持这个。这也是为什么repo工具要从下载而不能直接使用的原因，还有repo需要Python环境的支持。而git子模块只要安装了git就肯定支持。</p>
<p>添加一个子模块</p>
<pre class="language-none"><code class="language-none">git submodule add URL</code></pre>
<p>git clone </p>
<pre class="language-none"><code class="language-none">git clone --recurse-submodules URL</code></pre>
<p>忘记拉取子模块可以再补一句</p>
<pre class="language-none"><code class="language-none">git submodule update --init --recursive</code></pre>
<p>拉取某个特定的子模块</p>
<pre class="language-none"><code class="language-none">git submodule update --init path</code></pre>



      
    </div>

  </div>

  <div class="article-footer">
    <div class="article-meta pull-left">

    
      

    <span class="post-categories">
      <i class="icon-categories"></i>
        <a href="/blog/categories/git/">git</a>
    </span>
    

    
    

    <span class="post-tags">
      <i class="icon-tags"></i>
        <a href="/blog/tags/git/">git</a><a href="/blog/tags/repo/">repo</a>
    </span>
    

    </div>

    
  </div>
</article>

  









    </main>

    <footer class="site-footer">
  <p class="site-info">
    Proudly powered by <a href="https://hexo.io/" target="_blank">Hexo</a> and
    Theme by <a href="https://github.com/CodeDaraW/Hacker" target="_blank">Hacker</a>
    </br>
    
    &copy; 2023 ChenBlue
    
  </p>
</footer>
    
    
  </div>
</div>
</body>
</html>